OPERATING SYSTEM PATCHES For All NetWare Operating Systems Version 2.0a To fix the GPI problems with file & record locks PROBLEM A file server with 2.0a software will frequently get a General Protection Interrupt (GPI) error and halt when the workstations are running a file or record lock intensive application program. The LAN is ARCNET or some other lower performance network. The frequency of the GPI increases as the number of operating workstations increases. With 6 workstations the error usually occurs within 20 minutes. Upgrading the system to a faster LAN topology usually causes the problem to cease. Initially the problems were found by users of Softcraft's Btrieve which performs large numbers of physical record locks. Potentially the problem could also exhibit itself with any other lock intensive application. CAUSE This problem was found to be caused by two bugs in the lock code in the operating system. Although related, each of these two bugs would cause the file server to GPI at different places. The bugs would only exhibit themselves when intensive record and/or file locking were performed on a lower performance network. The first bug is related to the number of reply buffers that are setup in the operating system. The GPI is caused by the OS attempting to utilize more reply buffers than actually exist. The second bug occurs when a reply buffer is wrongly placed back on the available stack while it is actually still in use by the driver. SOLUTION Patches have been formulated for the various NetWare operating systems that will correct the two bugs discussed above. The patch can be performed using DOS DEBUG and must be performed to the NET$OS.OBJ file on the correct GENOS diskette before it is linked to the drivers. A program that automatically implements the patch will soon be available. Each operating system type requires a different patch. Patches have been formulated for the following operating systems: Non-Proprietary NetWare 286 Version 2.0a Proprietary NetWare 286 Version 2.0a Nondedicated NetWare 286 Version 2.0a Non-Proprietary NetWare SFT Level 1 Version 2.0a Proprietary NetWare SFT Level 1 Version 2.0a NetWare SFT Level 2 Version 2.0a SFT II NetWare with TTS Version 2.0a The patches each check to make sure that the operating system that is being patched matches the patch being used. If any of the search command results do not match with what is shown, then see note 1 at the bottom of the page. The segment numbers shown on the examples may be different than those you actually see when performing the patches. Comments are in parenthesis to the side of DEBUG commands. It is important that you backup the diskette to be patched before you start. This way, if any errors are made during implementation of the patch, you will still have the original unpatched files. Advanced Technical Services NetWare Services Division Novell, Inc. May 6, 1987 OPERATING SYSTEM PATCH For Non-Proprietary NetWare 286 Version 2.0a To fix the GPI problems with file & record locks With the GENOS-2 diskette in drive A type: C:> debug a:net$os.obj -r (Display Registers) AX=0000 BX=0004 CX=242D DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2BB8 ES=2BB8 SS=2BB8 CS=2BB8 IP=0100 NV UP EI PL NZ NA PO NC 2BB8:0100 800800 OR BYTE PTR [BX+SI],00 DS:0004=00 -r ds (Change register DS by adding 3000H to original value shown above) DS 2BB8 (The segment numbers may be different than shown here) :5bb8 -s 0 ffff 5d fb 5a 86 d6 5f (Check to make sure you are using the right patch) 5BB8:F29D (If the second number is different, see note 1 below) -e f297 5BB8:F297 55.e9 5BB8:F298 B0.42 10.cc -s 0 ffff 68 65 20 62 61 63 5BB8:9243 (If the second number is different, see note 1 below) -e 9243 5BB8:9243 68.2e 65.00 20.55 62.b0 61.10 5BB8:9248 63.e8 6B.34 67.e6 72.5d 6F.80 75.7e 6E.08 64.00 5BB8:9250 20.75 63.f3 61.e9 63.b2 68.33 65.4b 20.75 77.09 5BB8:9258 72.58 69.8b 74.0e 65.6a 20.5d 70.41 72.e9 6F.cc 5BB8:9260 63.2b 65.e9 73.6c 73.2b -s 0 ffff b9 fe ff 2b 4e 06 5BB8:E455 (If the second number is different, see note 1 below) -e e456 5BB8:E456 FE.a0 -s 0 ffff 26 8c 4d 06 4b 75 5BB8:E534 (If the second number is different, see note 1 below) -e e538 5BB8:E538 4B.e9 75.2d A8.d4 58.e9 8B.2e 0E.d4 -s 0 ffff e3 5c 50 8b d9 9a 5BB8:E4DE (If the second number is different, see note 1 below) -e e4df 5BB8:E4DF 5C.5b -w Writing 4242D bytes -q C:> The patch is now complete. You can now use GENOS to configure your operating system. Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have. OPERATING SYSTEM PATCH For Proprietary NetWare 286 Version 2.0a To fix the GPI problems with file & record locks With the GENOS-2 diskette in drive A type: C:> debug a:net$os.obj -r (Display Registers) AX=0000 BX=0004 CX=2431 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2BB8 ES=2BB8 SS=2BB8 CS=2BB8 IP=0100 NV UP EI PL NZ NA PO NC 2BB8:0100 800900 OR BYTE PTR [BX+DI],00 DS:0004=00 -r ds (Change register DS by adding 3000H to original value shown above) DS 2BB8 (The segment numbers may be different than shown here) :5bb8 -s 0 ffff 5d fb 5a 86 d6 5f 5BB8:F2A1 (If the second number is different, see note 1 below) -e f29b 5BB8:F29B 55.e9 B0.40 10.cc -s 0 ffff 68 65 20 62 61 63 5BB8:9245 (If the second number is different, see note 1 below) -e 9245 5BB8:9245 68.2e 65.00 20.55 5BB8:9248 62.b0 61.10 63.e8 6B.34 67.e6 72.5d 6F.80 75.7e 5BB8:9250 6E.08 64.00 20.75 63.f3 61.e9 63.b4 68.33 65.4b 5BB8:9258 20.75 77.09 72.58 69.8b 74.0e 65.6a 20.5d 70.41 5BB8:9260 72.e9 6F.ce 63.2b 65.e9 73.6e 73.2b -s 0 ffff b9 fe ff 2b 4e 06 5BB8:E459 (If the second number is different, see note 1 below) -e e45a 5BB8:E45A FE.a0 -s 0 ffff 26 8c 4d 06 4b 75 5BB8:E538 (If the second number is different, see note 1 below) -e e53c 5BB8:E53C 4B.e9 75.2b A8.d4 58.e9 5BB8:E540 8B.2c 0E.d4 -s 0 ffff e3 5c 50 8b d9 9a 5BB8:E4E2 (If the second number is different, see note 1 below) -e e4e3 5BB8:E4E3 5C.5b -w Writing 42431 bytes -q C:> The patch is now complete. You can now use GENOS to configure your operating system. Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have. OPERATING SYSTEM PATCH For Nondedicated NetWare 286 Version 2.0a To fix the GPI problems with file & record locks With the GENOS-2 diskette in drive A type: C:> debug a:net$os.obj -r (Display Registers) AX=0000 BX=0004 CX=477E DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2BB8 ES=2BB8 SS=2BB8 CS=2BB8 IP=0100 NV UP EI PL NZ NA PO NC 2BB8:0100 800900 OR BYTE PTR [BX+DI],00 DS:0004=00 -r ds (Change register DS by adding 3000H to original value shown above) DS 2BB8 (The segment numbers may be different than shown here) :5bb8 -s 0 ffff 5d fb 5a 86 d6 5f 5BB8:FC34 (If the second number is different, see note 1 below) -e fc2e 5BB8:FC2E 55.e9 B0.0f 5BB8:FC30 10.cc -s 0 ffff 68 65 20 62 61 63 5BB8:9B65 (If the second number is different, see note 1 below) -e 9b65 5BB8:9B65 68.2e 65.00 20.55 5BB8:9B68 62.b0 61.10 63.e8 6B.7e 67.e4 72.5d 6F.80 75.7e 5BB8:9B70 6E.08 64.00 20.75 63.f3 61.e9 63.e5 68.33 65.4b 5BB8:9B78 20.75 77.09 72.58 69.8b 74.0e 65.b2 20.5e 70.41 5BB8:9B80 72.e9 6F.ee 63.2b 65.e9 73.8e 73.2b -s 0 ffff b9 fe ff 2b 4e 06 5BB8:EDD1 (If the second number is different, see note 1 below) -e edd2 5BB8:EDD2 FE.a0 -s 0 ffff 26 8c 4d 06 4b 75 5BB8:EEB4 (If the second number is different, see note 1 below) -e eeb8 5BB8:EEB8 4B.e9 75.0b A8.d4 58.e9 8B.0c 0E.d4 -s 0 ffff e3 5c 50 8b d9 9a 5BB8:EE5E (If the second number is different, see note 1 below) -e ee5f 5BB8:EE5F 5C.5b -w Writing 4477E bytes -q C:> The patch is now complete. You can now use GENOS to configure your operating system. Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have. OPERATING SYSTEM PATCH For Non-Proprietary NetWare SFT Level 1 Version 2.0a To fix the GPI problems with file & record locks With the GENOS-2 diskette in drive A type: C:> debug a:net$os.obj -r (Display Registers) AX=0000 BX=0004 CX=9D0C DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2B84 ES=2B84 SS=2B84 CS=2B84 IP=0100 NV UP EI PL NZ NA PO NC 2B84:0100 800800 OR BYTE PTR [BX+SI],00 DS:0004=00 -r ds (Change register DS by adding 4000H to original value shown above) DS 2B84 (The segment numbers may be different than shown here) :6b84 -s 0 9000 5d fb 5a 86 d6 5f 6B84:6AB2 (If the second number is different, see note 1 below) -e 6aac 6B84:6AAC 55.e9 B0.30 10.cc -s 0 9000 68 65 20 62 61 63 6B84:0A39 (If the second number is different, see note 1 below) -e 0a39 6B84:0A39 68.2e 65.00 20.55 62.b0 61.10 63.e8 6B.16 6B84:0A40 67.d7 72.5d 6F.80 75.7e 6E.08 64.00 20.75 63.f3 6B84:0A48 61.e9 63.c4 68.33 65.4b 20.75 77.09 72.58 69.8b 6B84:0A50 74.0e 65.4a 20.62 70.41 72.e9 6F.de 63.2b 65.e9 6B84:0A58 73.7e 73.2b -s 0 9000 b9 fe ff 2b 4e 06 6B84:5C60 (If the second number is different, see note 1 below) -e 5c61 6B84:5C61 FE.a0 -s 0 9000 26 8c 4d 06 4b 75 6B84:5D43 (If the second number is different, see note 1 below) -e 5d47 6B84:5D47 4B.e9 6B84:5D48 75.1b A8.d4 58.e9 8B.1c 0E.d4 -s 0 9000 e3 5c 50 8b d9 9a 6B84:5CED (If the second number is different, see note 1 below) -e 5cee 6B84:5CEE 5C.5b -w Writing 49D0C bytes -q C:> The patch is now complete. You can now use GENOS to configure your operating system. Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have. OPERATING SYSTEM PATCH For Proprietary NetWare SFT Level 1 Version 2.0a To fix the GPI problems with file & record locks With the GENOS-2 diskette in drive A type: C:> debug a:net$os.obj -r (Display Registers) AX=0000 BX=0004 CX=9D0C DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2B84 ES=2B84 SS=2B84 CS=2B84 IP=0100 NV UP EI PL NZ NA PO NC 2B84:0100 800900 OR BYTE PTR [BX+DI],00 DS:0004=00 -r ds (Change register DS by adding 4000H to original value shown above) DS 2B84 (The segment numbers may be different than shown here) :6b84 -s 0 9000 5d fb 5a 86 d6 5f 6B84:6AB5 (If the second number is different, see note 1 below) -e 6aaf 6B84:6AAF 55.e9 6B84:6AB0 B0.2e 10.cc -s 0 9000 68 65 20 62 61 63 6B84:0A3A (If the second number is different, see note 1 below) -e 0a3a 6B84:0A3A 68.2e 65.00 20.55 62.b0 61.10 63.e8 6B84:0A40 6B.16 67.d7 72.5d 6F.80 75.7e 6E.08 64.00 20.75 6B84:0A48 63.f3 61.e9 63.c6 68.33 65.4b 20.75 77.09 72.58 6B84:0A50 69.8b 74.0e 65.4a 20.62 70.41 72.e9 6F.e0 63.2b 6B84:0A58 65.e9 73.80 73.2b -s 0 9000 b9 fe ff 2b 4e 06 6B84:5C63 (If the second number is different, see note 1 below) -e 5c64 6B84:5C64 FE.a0 -s 0 9000 26 8c 4d 06 4b 75 6B84:5D46 (If the second number is different, see note 1 below) -e 5d4a 6B84:5D4A 4B.e9 75.19 A8.d4 58.e9 8B.1a 0E.d4 -s 0 9000 e3 5c 50 8b d9 9a 6B84:5CF0 (If the second number is different, see note 1 below) -e 5cf1 6B84:5CF1 5C.5b -w Writing 49D0F bytes -q C:> The patch is now complete. You can now use GENOS to configure your operating system. Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have. OPERATING SYSTEM PATCH For NetWare SFT Level 2 Version 2.0a To fix the GPI problems with file & record locks With the GENOS-4 diskette in drive A type: C:> debug a:net$os.obj -r (Display Registers) AX=0000 BX=0004 CX=E677 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2B83 ES=2B83 SS=2B83 CS=2B83 IP=0100 NV UP EI PL NZ NA PO NC 2B83:0100 800900 OR BYTE PTR [BX+DI],00 DS:0004=00 -r ds (Change register DS by adding 4000H to original value shown above) DS 2B83 (The segment numbers may be different than shown here) :6b83 -s 0 e000 5d fb 5a 86 d6 5f 6B83:A6B4 (If the second number is different, see note 1 below) -e a6ae 6B83:A6AE 55.e9 B0.1d 6B83:A6B0 10.cb -s 0 e000 68 65 20 62 61 63 6B83:4562 (If the second number is different, see note 1 below) -e 4562 6B83:4562 68.2e 65.00 20.55 62.b0 61.10 63.e8 6B83:4568 6B.2a 67.c5 72.5d 6F.80 75.7e 6E.08 64.00 20.75 6B83:4570 63.f3 61.e9 63.d7 68.34 65.4b 20.75 77.09 72.58 6B83:4578 69.8b 74.0e 65.4e 20.64 70.41 72.e9 6F.e0 63.2c 6B83:4580 65.e9 73.80 73.2c -s 0 e000 b9 fe ff 2b 4e 06 6B83:9851 (If the second number is different, see note 1 below) -e 9852 6B83:9852 FE.a0 -s 0 e000 26 8c 4d 06 4b 75 6B83:9934 (If the second number is different, see note 1 below) -e 9938 6B83:9938 4B.e9 75.19 A8.d3 58.e9 8B.1a 0E.d3 -s 0 e000 e3 5c 50 8b d9 9a 6B83:98DE (If the second number is different, see note 1 below) -e 98df 6B83:98DF 5C.5b -w Writing 4E677 bytes -q C:> The patch is now complete. You can now use GENOS to configure your operating system. Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have. OPERATING SYSTEM PATCH For SFT II NetWare with TTS Version 2.0a To fix the GPI problems with file & record locks With the GENOS-4 diskette in drive A type: C:> debug a:net$os.obj -r (Display Registers) AX=0000 BX=0005 CX=4DDC DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2BB8 ES=2BB8 SS=2BB8 CS=2BB8 IP=0100 NV UP EI PL NZ NA PO NC 2BB8:0100 800900 OR BYTE PTR [BX+DI],00 DS:0004=00 -r ds (Change register DS by adding 4000H to original value shown above) DS 2BB8 (The segment numbers may be different than shown here) :6bb8 -s 0 ffff b9 fe ff 2b 4e 06 6BB8:FFB6 (If the second number is different, see note 1 below) -e ffb7 6BB8:FFB7 FE.a0 -s 0 ffff 68 65 20 62 61 63 6BB8:8F5D (If the second number is different, see note 1 below) -e 8f5d 6BB8:8F5D 68.2e 65.00 20.55 6BB8:8F60 62.b0 61.10 63.e8 6B.14 67.c4 72.5d 6F.80 75.7e 6BB8:8F68 6E.08 64.00 20.75 63.f3 61.e9 63.fb 68.57 65.4b 6BB8:8F70 20.75 77.09 72.58 69.8b 74.0e 65.34 20.67 70.41 6BB8:8F78 72.e9 6F.04 63.50 65.e9 73.a4 73.4f -r ds (Change register DS by again by adding an additional 1000H) DS 6BB8 (The segment numbers may be different than shown here) :7bb8 -s 0 ffff 5d fb 5a 86 d6 5f 7BB8:0E19 (If the second number is different, see note 1 below) -e 0e13 7BB8:0E13 55.e9 B0.f9 10.a7 -s 0 ffff 26 8c 4d 06 4b 75 7BB8:0099 (If the second number is different, see note 1 below) -e 9d 7BB8:009D 4B.e9 75.f5 A8.af 7BB8:00A0 58.e9 8B.f6 0E.af -s 0 ffff e3 5c 50 8b d9 9a 7BB8:0043 (If the second number is different, see note 1 below) -e 44 7BB8:0044 5C.5b -w Writing 54DDC bytes -q C:> The patch is now complete. You can now use GENOS to configure your operating system. Note 1: If the second number is different when doing these checks then either the operating system has already been patched, the operating system is not version 2.0a, or you are using the wrong patch for the operating system you have.